package main

import (
	"fmt"
	"bufio"
	"os"
	"io"
)

func main() {

	// 打开一个存在的文件中，将原来的内容覆盖成新的内容10句 "你好，尚硅谷"
	filePath := "a.txt"
	file, err := os.OpenFile(filePath, os.O_WRONLY | os.O_TRUNC, 0666)
	if err != nil {
		fmt.Println("err:", err)
		return
	}

	defer file.Close()
	str := "你好,尚硅谷\n"

	writer := bufio.NewWriter(file)
	for i := 0; i < 10; i++ {
		writer.WriteString(str)
	}

	writer.Flush()

   // 打开一个存在的文件，在原来的内容追加内容 'ABC! ENGLISH!'
   filePath = "a.txt"
   file2, err := os.OpenFile(filePath, os.O_WRONLY | os.O_APPEND, 0666)
   if err != nil  {
   		fmt.Printf("open file err=%v\n", err)
   		return
   }
   defer file2.Close()
   str = "ABC,ENGLISH!\n"
   writer = bufio.NewWriter(file2)
   for i := 0; i < 10; i++ {
   		writer.WriteString(str)
   }

   writer.Flush()

   // 打开一个存在的文件，将原来的内容读出显示在终端，并且追加5句"hello,北京!"
   filePath = "a.txt"
   file3, err := os.OpenFile(filePath, os.O_RDWR | os.O_APPEND, 0666)
   if err != nil  {
   		fmt.Printf("open file err=%v\n", err)
   		return
   }
   defer file3.Close()

   // 先读取原来文件的内容，并显示在终端
   reader := bufio.NewReader(file)
   for {
   		str, err := reader.ReadString('\r')
   		if err == io.EOF {
   			break
   		}
   		fmt.Print(str)
   }

   str = "hello,北京!\n"
   writer = bufio.NewWriter(file3)
   for i := 0; i < 5; i++ {
   		writer.WriteString(str)
   }

   writer.Flush()

}